home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / prog / atari / c / stut_src / images.c < prev    next >
C/C++ Source or Header  |  1996-05-27  |  4KB  |  204 lines

  1. /*
  2.  * images.c
  3.  *
  4.  * Purpose:
  5.  * --------
  6.  * Gestion d'images
  7.  *
  8.  * History:
  9.  * --------
  10.  * fplanque: Created
  11.  */
  12.  
  13.  
  14.      #include "!OPTIONS.H"                /* Options de compilation */         
  15.     #define    THIS_FILE    "IMAGES.C v1.00 - 03.95"
  16.           
  17.  
  18. /*
  19.  * System headers:
  20.  */
  21.     #include    <stdio.h>
  22.     #include    <aes.h>                        /* header AES */
  23.    
  24.  
  25. /*
  26.  * Custom headers:
  27.  */
  28.     #include    "SPEC_PU.H"
  29.     #include "S_MALLOC.H"
  30.     #include    "WIN_PU.H"
  31.     
  32.  
  33. /*
  34.  * ------------------------ PROTOTYPES -------------------------
  35.  */
  36. /*
  37.  * EXTernal prototypes:
  38.  */
  39.     /* 
  40.      * G‚n‚ral: 
  41.      */
  42.     extern    void    ping( void );
  43.     extern    void    signale( const char * inf );
  44.     /*
  45.      * fenˆtres: 
  46.      */
  47.     extern    WIPARAMS *find_datawindow2( unsigned long adr_contenu, WIPARAMS *start );
  48.     extern    void    put_wi_on_top( WIPARAMS *wi_params_adr );
  49.  
  50.  
  51. /*
  52.  * PRIVate INTernal prototypes:
  53.  */
  54.     static    void    set_MFDB_pi3( MFDB *picMFDB, DEGASPIX *pointeur );
  55.  
  56. /*
  57.  * ------------------------ VARIABLES -------------------------
  58.  */
  59.  
  60.     
  61. /*
  62.  * External variables: 
  63.  */
  64.     /* 
  65.      * G‚n‚ral: 
  66.      */
  67.     extern    int    G_x_mini, G_y_mini;            /* Coord sup gauche de l'‚cran */
  68.     extern    int    G_w_maxi, G_h_maxi;            /* Taille de l'‚cran de travail */
  69.     /*
  70.      * Fenˆtres
  71.      */
  72.     extern    WIPARAMS        *G_wi_list_adr;        /* Adresse de l'arbre de paramŠtres */
  73.  
  74.  
  75. /*
  76.  * ------------------------ FUNCTIONS -------------------------
  77.  */
  78.  
  79. /*
  80.  * pi3_optimal(-)
  81.  *
  82.  * Purpose:
  83.  * --------
  84.  * D‚termine fenˆtre optimale (full) pour une image Degas
  85.  *
  86.  * History:
  87.  * --------
  88.  * fplanque: Created
  89.  */
  90. void pi3_optimal( int wi_ckind, int *border_x, int *border_y, int *border_w, int *border_h)
  91. {
  92.     int    work_x, work_y, work_w, work_h;    /* Coordonn‚es zone de travail */
  93.  
  94.     work_x = 50;                                /* Arbitraire */
  95.     work_y = 50;
  96.     work_w = 640;                                /* Taille image */
  97.     work_h = 400;
  98.  
  99.     /*
  100.      * Calcule les coordonn‚es totales de la fenˆtre: 
  101.      */
  102.     wind_calc( WC_BORDER, wi_ckind, work_x, work_y, work_w, work_h,
  103.                     border_x, border_y, border_w, border_h );
  104.  
  105.     /*
  106.      * Contr“le que ‡a rentre... 
  107.      */
  108.     if ( *border_w > G_w_maxi )
  109.         *border_w = G_w_maxi;
  110.     if ( *border_h > G_h_maxi )
  111.         *border_h = G_h_maxi;
  112.  
  113.     /*
  114.      * Centrage: 
  115.      */        
  116.     *border_x = G_x_mini + ( G_w_maxi - *border_w ) / 2;
  117.     *border_y = G_y_mini + ( G_h_maxi - *border_h ) / 2;
  118.         
  119. }
  120.  
  121.  
  122.  
  123. /*
  124.  * access_image(-)
  125.  *
  126.  * Purpose:
  127.  * --------
  128.  * Essaie d'acc‚der … une image en m‚moire pour l'afficher
  129.  *
  130.  * History:
  131.  * --------
  132.  * 1993: fplanque: Created
  133.  * 06.08.94: extraction du code de controle du nbre de fenˆtre ouverte sur DATAPAGE (limite: 1)
  134.  */
  135. int    access_image( 
  136.             DATAPAGE *datapage, 
  137.             WORK_CONTENT *content_ptr, 
  138.             WORK_DRAW *draw_ptr )
  139. {
  140.     /*
  141.      * Fixe adr de la page courante! (qui contient celle de l'image:) 
  142.      */
  143.     content_ptr -> datapage = datapage;
  144.  
  145.     /*
  146.      * Cr‚e et fixe un MFDB appropri‚ pour l'affichage de l'image: 
  147.      */
  148.     draw_ptr -> psrcMFDB = (MFDB *) MALLOC( sizeof( MFDB ) ); 
  149.     set_MFDB_pi3( draw_ptr -> psrcMFDB, (content_ptr -> datapage) -> data.degaspix );
  150.  
  151.     return    1;        /* On peut ouvrir */
  152. }
  153.  
  154.  
  155.  
  156. /*
  157.  * set_MFDB_pi3(-)
  158.  *
  159.  * Purpose:
  160.  * --------
  161.  * Initialisation MFDB pour une image PI3
  162.  *
  163.  * History:
  164.  * --------
  165.  * fplanque: Created
  166.  */
  167. void    set_MFDB_pi3( MFDB *picMFDB, DEGASPIX *pointeur )
  168. {
  169.     picMFDB -> fd_addr= pointeur -> bitmap;
  170.     picMFDB -> fd_w=640;            /* Largeur en pixels */
  171.     picMFDB -> fd_h=400;            /* Hauteur en pixels */
  172.     picMFDB -> fd_wdwidth=(80 / (int)sizeof(int));    /* Blockbreite in Integern  */
  173.                                             /* CAST integer n‚cessaire!)
  174.    picMFDB -> fd_stand=0;            /* 0 = ger„teabh„ngiges Format
  175.                                      1 = Standardformat       */
  176.     picMFDB -> fd_nplanes=1;        /* Nb plans */
  177.     picMFDB -> fd_r1=0;                /* R‚serv‚ */
  178.     picMFDB -> fd_r2=0;                /* R‚serv‚ */
  179.     picMFDB -> fd_r3=0;                /* R‚serv‚ */
  180. }
  181.  
  182.  
  183. /*
  184.  * open_pi3(-)
  185.  *
  186.  * Purpose:
  187.  * --------
  188.  * Ouverture d'une fenˆtre contenant une PI3
  189.  *
  190.  * History:
  191.  * --------
  192.  * fplanque: Created
  193.  */
  194. void    open_pi3( WIPARAMS *wi_params_adr, DATAPAGE *content_ptr, MFDB *draw_ptr )
  195. {
  196.     wi_params_adr -> content_ptr.datapage = content_ptr;    /* Pointeur sur contenu */
  197.     wi_params_adr -> draw_ptr.psrcMFDB    = draw_ptr;            /* Pointeur sur struct MFDB */
  198.     wi_params_adr -> total_w    = 640;        /* Taille totale */
  199.     wi_params_adr -> total_h    = 400;
  200.     wi_params_adr -> h_step        = 16;            /* Saut par 16 pix */
  201.     wi_params_adr -> v_step     = 16;            /* Saut par 16 pix */
  202. }
  203.  
  204.